﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Cofe.Core
{
    #region Enum taken from Microsoft.Practices.Prism.Logging
    public enum Priority
    {
        None = 0,
        High = 1,
        Medium = 2,
        Low = 3,
    }

    public enum Category
    {
        Debug = 0,
        Exception = 1,
        Info = 2,
        Warn = 3,
    }
    #endregion

    /// <summary>
    /// Interface for Logger service
    /// </summary>
    public interface ILogger : ICofeService
    {
        /// <summary>
        /// Logs the given string to the log file
        /// </summary>
        void Log(string msg);

        /// <summary>
        /// Logs the message contained in the given exception
        /// to the log file.
        /// </summary>
        void Log(Exception exc);

        /// <summary>
        /// Uses the given format string to log the arguments
        /// to the log file.
        /// </summary>
        void Log(string format, params object[] arg);

        /// <summary>
        /// Logs the given message to the log file, marking it
        /// with the proper Category and Priority
        /// </summary>
        void Log(string pMessage, Category pCategory, Priority pPriority);
    }
}
